Modern computers and computer-based systems typically include platform firmware, i.e., code (representing instructions and non-instruction-type data) stored in non-volatile “firmware” memory and used for initializing and for low-level functionality of a computer-based system. Typically, firmware code is loaded into relatively fast volatile memory for use.
It is sometimes desirable to update firmware, e.g., to fix firmware bugs, to add features, or to tweak system parameters. In older computer systems, updating firmware can involve swapping out one firmware read-only-memory (ROM) encoded with the firmware to be replaced for another encoded with the updated firmware. More recently, firmware is stored in rewritable non-volatile memory so that firmware updates can be updated in place. Such updates can take effect once the system is reinitialized, i.e., rebooted.